package com.intct.hbase.dml;

import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.Table;

import java.io.IOException;

/**
 * @author gufg
 * @since 2025-11-04 11:09
 * 继承AbsDml 实现execCommand
 */
public class GetData extends AbsDml {

    @Override
    void execCommand(Table table) throws IOException {
        Get get = new Get("1001".getBytes());

        // 指定查询所有版本
//        get.readAllVersions();

        // 如果需要指定版本数量
//         get.readVersions(3);

        // 练习： 时间戳和时间戳范围

        // 指定列族
        get.addFamily("f2".getBytes());

        Result result = table.get(get);

        // 获取所有的单元格(字段)
        Cell[] cells = result.rawCells();

        for (Cell cell : cells) {
            // rowkey  -- 将byte字节转为字符串  == > new String(字节)
            String rowkey = new String(CellUtil.cloneRow(cell));
            // 列族
            String familyName = new String(CellUtil.cloneFamily(cell));
            // 列限定符
            String qualifier = new String(CellUtil.cloneQualifier(cell));
            // 值
            String value = new String(CellUtil.cloneValue(cell));

            System.out.println("主键 = " + rowkey + "; 列族 = " + familyName + "; 列限定符 = " + qualifier + "; 值 = " + value);
        }
    }


}
